Η πύλη εισόδου στο ελληνικό διαδίκτυο για θέματα επιστήμης και τεχνολογίας        
     
 
Java Casio Scientific Calculator

Μέχρι σήμερα έχουν κατασκευαστεί αρκετά προγράμματα προσομοίωσης κοινών αριθμομηχανών (calculators) χρησιμοποιώντας τις γλώσσες αντικειμενοστραφούς προγραμματισμού. Η γλώσσα προγραμματισμού Java έχει αναπτυχθεί από την εταιρεία Sun και είναι μια αντικειμενοστρεφής γλώσσα προγραμματισμού που δίνει την δυνατότητα κατασκευής προγραμμάτων που μπορούν να εκτελούνται σε δίκτυα και στο Διαδίκτυο ανεξάρτητα από την υπολογιστική πλατφόρμα, χρησιμοποιώντας για την εκτέλεση τους έναν κοινό φυλλομετρητή ιστοσελίδων (browser). Λόγω του γεγονότος ότι το συγκεκριμένο πρόγραμμα είναι κατασκευασμένο σε γλώσσα Java δίνει την δυνατότητα για εκτέλεση του προγράμματος σε τοπικά δίκτυα μέσω ενός κεντρικού υπολογιστή (server) όπως είναι τα σχολικά εργαστήρια, στο Διαδίκτυο με δημοσίευση του σε έναν διακομιστή ιστοσελίδων σε θέματα εκπαίδευσης (web server). Διδακτικά η σημασία του είναι ιδιάζουσα μια που μπορεί να χρησιμοποιηθεί σαν διδακτικό παράδειγμα στη μελέτη και εφαρμογή αντικειμενοστρεφών γλωσσών προγραμματισμού όπως είναι η γλώσσα Java. Επιπλέον ο αλγόριθμος του είναι κατάλληλος για να δείξει σε ένα μαθητή την λογική που ακολουθεί μια ψηφιακή αριθμομηχανή για την εκτέλεση μιας σειράς αριθμητικών πράξεων και πως αυτή μοιάζει ή διαφέρει με την ανθρώπινη λογική.

ΕΙΣΑΓΩΓΗ
Η πρωτοτυπία του προγράμματος έγκειται στο γεγονός ότι όχι μόνο το interface του απεικονίζει ένα πραγματικό Casio Calculator αλλά ακόμα οι αριθμοί απεικονίζονται στην οθόνη του σαν κανονικοί ψηφιακοί αριθμοί.
Ο αλγόριθμός του είναι εύκολο να συμπεριλάβει και άλλες πράξεις όπως δυνάμεις, ημίτονα κλπ. Οι εικόνες του calculator καθώς και των ψηφίων χρησιμοποιούνται σαν έτοιμα images από το πρόγραμμα.

ΑΝΑΛΥΣΗ ΛΕΙΤΟΥΡΓΙΑΣ
O αλγόριθμος του προγράμματος είναι ασυνήθιστος και χρησιμοποιεί και μεθόδους από παλαιότερες εκδόσεις της Java. Ουσιαστικά αφού πρώτα δέχεται τις εντολές του χρήστη από το ποντίκι, μεταχειρίζεται τους αριθμούς που αυτός επιλέγει, σαν χαρακτήρες (String). Όταν είναι να γίνει κάποια πράξη τότε τα ακόλουθα βήματα συμβαίνουν :
· μετατρέπει τους χαρακτήρες σε αριθμούς,
num1 = num1+(Double.valueOf(display).doubleValue());
· κάνει τις πράξεις,
· επιστρέφει το αποτέλεσμα και το μετατρέπει σε χαρακτήρες (String),
display=String.valueOf(num1);
· αντιστοιχεί κάθε χαρακτήρα του αποτελέσματος σε εικόνα ανάλογα με τον αριθμό που αντιπροσωπεύει.
if (display.charAt(i)=='1')
{
posx=posx+pos;
g.drawImage(one,posx,170,this);}
Ακόμα έμφαση έχει δοθεί στον τρόπο με τον οποίο γίνονται οι πράξεις. Το πρόγραμμα μόλις ο χρήστης επιλέξει μια πράξη, κρατάει στην μνήμη την επιλογή του χρήστη και κατόπι εκτελεί την προηγουμένως αποθηκευμένη πράξη. Δηλαδή αν έχουμε την πράξη,
12+5-3
μόλις ο χρήστης πατήσει το (-) το πρόγραμμα δεν αφαιρεί το 5 αλλά το προσθέτει στο 12, δηλαδή έχει κρατήσει την αμέσως προηγούμενη πράξη.

switch (op) (Η μεταβλητή op έχει κρατήσει την τελευταία πράξη)
{
case 1:
num1 = num1+(Double.valueOf(display).doubleValue());
break;
case 2:
num1 = num1-(Double.valueOf(display).doubleValue());
break;
case 3:
num1 = num1*(Double.valueOf(display).doubleValue());
break;
case 4:
num1 = num1/(Double.valueOf(display).doubleValue());

break;
}
display=String.valueOf(num1);
op=1; (Η op παίρνει τιμή για την επόμενη πράξη)
num1=0;
flagnum=true;
}

Το πρόγραμμα επίσης χρησιμοποιεί κάποιες Boolean μεταβλητές.
· Flagnum: Λέει στο πρόγραμμα ότι έχει πατηθεί πράξη, οπότε σε ενδεχόμενη επιλογή αριθμού από το χρήστη, να καθαρίστει πρώτα η οθόνη.
· Flag: Χρησιμοποιείται για να μην μπορεί να βάλει κανείς την τελεία των δεκαδικών δεύτερη φορά.

Ακόμα χρησιμοποιούνται κάποιες μεταβλητές για την καλή εμφάνιση των γραφικών στην οθόνη. Η βιβλιοθήκη java.lang παρέχει τις απαραίτητες συναρτήσεις ώστε το κομπιουτεράκι να είναι σε θέση να κάνει πιο σύνθετες πράξεις.

ΕΠΙΛΟΓΟΣ
Φυσικά το πρόγραμμα επιδέχεται βελτιώσεις. Καταρχήν θα μπορούσε ο κώδικας να σπάσει σε μικρότερες μεθόδους, συναρτήσεις και να μην γίνονται οι περισσότερες λειτουργίες μέσα στη MouseDown. Έπειτα υπάρχει η δυνατότητα όταν επανασχεδιάζεται το παράθυρο να επανασχεδιάζεται μόνο η οθόνη του calculator και όχι όλο το παράθυρο αφού ουσιαστικά σε αυτό το κομμάτι γίνονται αλλαγές. Έτσι θα μειωνόταν και το τρεμόπαιγμα στην οθόνη. Στην δεύτερη έκδοση του προγράμματος θα συμπεριληφθούν αυτές οι αλλαγές. Στο αρχείο που ακολουθεί σε μορφή PDF (543 KB), παρατίθεται ο κώδικας με εξηγήσεις.

 

Applet - Κείμενα: Αθανάσιος Ντάφλος, Δρ. Σαράντος Ψυχάρης, Αντώνης Οικονόμου
Παρουσίαση: 2002 WebLab NHRF

 SPIN version © WebLab, NHRF, 2000-2001. Απαιτείται η χρήση browser με υποστήριξη CSS. Προτείνεται IE5.0 ή καλύτερος.